PARSE VALUE FindAddr(MM.FromNode) WITH MM.Address .
MM_GetNodeInfo MM.FromNode MM.Nodo
IF Rc=3 THEN;DO
DO n=0 FOR MM.Unknown.Count
CALL AddLine(Body,Trasforma(MM.Unknown.n))
END
CALL WriteMsg(Body,'Who Are You ?','',MM.Address,MM.FromName,MM.FromNode,'PVT')
RETURN
END
IF STRIP(MM.PassWord) ~=UPPER(MM.Nodo.AreaFixPw) THEN;DO
DO n=0 FOR MM.BadPass.Count
CALL AddLine(Body,Trasforma(MM.BadPass.n))
END
CALL WriteMsg(Body,'Check Your Password Please','',MM.Address,MM.FromName,MM.FromNode,'PVT')
RETURN
END
IF INDEX(MM.Switch,'-Q') ~=0 THEN MM.Query=TRUE;IF INDEX(MM.Switch,'-L') ~=0 THEN MM.List=TRUE
IF INDEX(MM.Switch,'-U') ~=0 THEN MM.UnLinked=TRUE;IF INDEX(MM.Switch,'-H') ~=0 THEN MM.Help=TRUE
IF MM.Mode='AREAFIX' THEN;DO
IF INDEX(MM.Switch,'-R') ~=0 THEN MM.Rescan=TRUE;IF INDEX(MM.Switch,'-FR') ~=0 THEN MM.ForceRescan=TRUE
END
CALL ParseMsg(MM.FromNode)
IF MM.NoPolicy.Count>1 THEN CALL WriteMsg(NoPolicy,'Your Requested Policy','',MM.Address,MM.FromName,MM.FromNode,'PVT')
IF MM.Help=TRUE THEN;DO
DO n=0 FOR MM.Help.count;CALL AddLine(Body,Trasforma(MM.Help.n));END;CALL WriteMsg(Body,'Your Requested Help','',MM.Address,MM.FromName,MM.FromNode,'PVT')
END
IF MM.Query=TRUE THEN;DO
IF MM.ListStatus=FALSE THEN CALL ListAreas(MM.FromNode);CALL WriteMsg(Connected_Areas,'Your Requested Query','',MM.Address,MM.FromName,MM.FromNode,'PVT')
END
IF MM.List=TRUE THEN;DO
IF MM.ListStatus=FALSE THEN CALL ListAreas(MM.FromNode);CALL WriteMsg(Available_Areas,'Your Requested List','',MM.Address,MM.FromName,MM.FromNode,'PVT')
END
IF MM.UnLinked=TRUE THEN;DO
IF MM.ListStatus=FALSE THEN CALL ListAreas(MM.FromNode);CALL WriteMsg(Unlinked_Areas,'Your Requested Unlinked List','',MM.Address,MM.FromName,MM.FromNode,'PVT')
END
RETURN
ParseMsg:PROCEDURE EXPOSE MM.
PARSE ARG Node
DO i=0 FOR MM.Msg.Text.Count
IF MM.Msg.Text.i='' THEN ITERATE
IF LEFT(MM.Msg.Text.i,1)='+'|LEFT(MM.Msg.Text.i,1)='-' THEN Area=COMPRESS(MM.Msg.Text.i)
ELSE PARSE UPPER VAR MM.Msg.Text.i Area Altro
IF LEFT(Area,3)='---' THEN LEAVE
IF LEFT(Area,1)='%' THEN;DO
Linea=Area Altro
IF Area='%RESCAN'|Area='%R'|Area='%FORCERESCAN'|Area='%FR'|Area='%RESCANDAYS'|Area='%RD'|Area='%FORCERESCANDAYS'|Area='%FRD' THEN MM_AddToStem MM.ExteResc 'Linea'
PARSE ARG Area;IF MM.Mode='AREAFIX' THEN MM_GetAreaInfo Area Info;ELSE Info.Type='TICK';RETURN Info.Type
IsConnected:PROCEDURE EXPOSE MM.
PARSE ARG Area,Nodo;IF MM.Mode='AREAFIX' THEN MM_GetAreaInfo Area Info;ELSE MM_GetTickAreaInfo Area Info;IF Rc ~=0 THEN RETURN FALSE;MM_SearchInStem Info.Node Resp Nodo'#?' STR;IF Resp.Count=1 THEN RETURN TRUE;RETURN FALSE
Message:PROCEDURE EXPOSE MM.
PARSE ARG Chiave;DO n=0 FOR MM.Messages.Count;PARSE VAR MM.Messages.n Key Frase;IF Chiave=STRIP(Key) THEN RETURN TRASFORMA(STRIP(Frase));END;RETURN ''